package com.tjetc.common;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

@Component  // 确保被Spring管理
public class FileUploadUtil {

    /**
     * 上传文件
     * @param file 文件
     * @param basePath 基本路径
     * @return 文件访问路径
     * @throws IOException
     */
    public String upload(MultipartFile file, String basePath) throws IOException {
        // 获取文件名
        String originalFilename = file.getOriginalFilename();

        // 生成新文件名（避免文件名冲突）
        String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
        String newFileName = UUID.randomUUID().toString() + extension;

        // 构建按日期的目录结构
        String datePath = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
        String fullPath = basePath + "/" + datePath;

        // 确保目录存在
        File dir = new File(fullPath);
        if (!dir.exists()) {
            dir.mkdirs();
        }

        // 保存文件
        Path path = Paths.get(fullPath, newFileName);
        Files.write(path, file.getBytes());

        // 返回相对路径（用于访问）
        return datePath + "/" + newFileName;
    }
}